import axios from 'axios'
import { Toast } from 'zarm'

// vite 中获取环境变量
const MODE = import.meta.env.MODE  // 'development' 


// 判别是本地开发还是线上开发？本地  前面端口，后期上线线上IP地址   后面端口
//正常情况下，在开发环境下和生产模式下有着不同的 baseURL。
axios.defaults.baseURL = MODE === 'development' ? '/api' : ''

axios.defaults.withCredentials = true // 请求是否携带凭证

//提前设置默认请求头的请求方式
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'

//每次请求去到localStorage获取我们手动储存在那的token（在写token的时候，我们会手动存储在那）
axios.defaults.headers['Authorization'] = `${localStorage.getItem('token') || null}`

axios.defaults.headers.post['Content-Type'] = 'application/json'//请求体统一以JSON类型数据传输

// 响应拦截
axios.interceptors.response.use(res => {
  if (typeof res.data !== 'object') {
    Toast.show('服务器异常！')
    return Promise.reject(res)
  }
  if (res.data.code != 200) {
    if (res.data.msg) Toast.show(res.data.msg)
    if (res.data.code == 401) {   //401状态码意味着登入失效，token失效,则需要重定向到登入页
      window.location.href = '/login'
    }
    return Promise.reject(res.data)   //把错误的内容抛出
  }

  //状态码 = 200
  return res.data//直接把数据抛出
})

export default axios